﻿#define _CRT_SECURE_NO_WARNINGS 1

//#include<stdio.h>
//#include<ctype.h>
//#include<limits.h>
//#include<assert.h>
//
////模拟实现atoi 函数
////int atoi (const char* string);
////只有遇到全是数字字符到\0 结束才是合法返回；
////空指针、空字符串、遇到空格回会跳过空格，正负号、遇到非数字字符便直接返回、考虑越界
////利用枚举整个全局的变量来控制所得结果合法还是非法
//
//enum Static
//{
//	VALID,
//	INVALID
//}sta = INVALID;//默认是非法
//
//int my_atoi(const char* str)//仅仅只是对该字符串进行操作，并不会改变这个字符串中的内容
//{
//	int flag = 1;//不带符号默认为整数
//	assert(str);//传递的是指针变量就要防止所传参数为空指针
//	//针对空字符串，里面有一个\0 ,便直接返回0，默认为非法返回
//	if (*str == '\0')
//	{
//		return 0;//返回非法0
//	}
//	//如果遇到空格便会跳过，利用函数isspace ,所要引用的头文件 <ctype.h>
//	//并且遇到的可能不止一个空格，故而使用while 
//	while (isspace(*str))
//	{
//		str++;
//	}
//	//可能会带有正负，不带便默认为正；有三种可能性，带正好，带负号，不带；故而使用if else if else
//	if (*str == '+')
//	{
//		flag = 1;
//		str++;
//	}
//	else if (*str == '-')
//	{
//		flag = -1;
//		str++;
//	}
//	long long ret = 0;
//	//将字符转换成数字--> 数字字符-'0' =数字； 考虑越界问题，故而存放转换的数据不用int 类型的变量
//	//判断该字符是不是数字字符--> 利用函数 isdigit --> 得引用头文件 <ctype.h>
//	while (*str)//范围
//	{
//		//判断str 指向得字符是不是数字字符，不是数字字符便会直接返回
//		if (isdigit(*str))
//		{
//			//计算
//			ret = ret * 10 + flag * (*str - '0');//带入符号的计算
//			str++;//调整
//			//判断计算所得的ret 是否在int 的取值范围之内
//			//利用INT_MIN,INT_MAX--> 引用头文件 <limits.h>
//			if (ret < INT_MIN || ret >INT_MAX)
//			{
//				return 0;//越界后无论返回什么都是非法的，故而此处返回什么都不正确；直接返回一个非法0
//			}
//		}
//		else
//		{
//			return (int)ret;//返回非法ret
//		}
//	}
//	//当自然访问到\0 ，便就是合法返回
//	if (*str == '\0')
//		sta = VALID;
//	return (int)ret;
//
//}
//int main()
//{
//	char ch[10] = "  -12m";
//	int ret = my_atoi(ch);
//	if (sta == VALID)
//		printf("合法返回:%d\n", ret);
//	else
//		printf("非法返回:%d\n", ret);
//	return 0;
//}

//利用fputc 将字符输出到标准输出流--> 屏幕上去
//#include<stdio.h>
//
//int main()
//{
//	//标准输出流stdout ，是默认打开的
//	//操作
//	fputc('c', stdout);
//
//	return 0;
//}

//利用 fgetc 从标准输入流中获取数据
//#include<stdio.h>
//
//int main()
//{
//	//标准输入流 stdin ,当c程序运行起来时，此流自动打开
//	//操作
//	char c = 0;
//	c = fgetc(stdin);
//	printf("%c\n", c);
//	return 0;
//}

////使用 fputs 将文本行输出到屏幕
//#include<stdio.h>
//
//int main()
//{
//	//标准输出流stdout ，是默认打开的
//	//操作
//	fputs("chongqing", stdout);
//
//	return 0;
//}

//使用 fgets 从键盘上获取数据
//#include<stdio.h>
//
//int main()
//{
//	//标准输入流 stdin ，是默认打开的
//	//操作
//	char ch[10] = { 0 };
//	fgets(ch, 10, stdin);
//	printf("%s\n", ch);
//
//	return 0;
//}

//使用 fprintf 将格式化数据输出到屏幕上
//#include<stdio.h>
//
//struct peo
//{
//	char name[10];
//	int age;
//}p ;
//
//int main()
//{
//	//标准输入流 stdout ，是默认打开的
//	//操作
//	fscanf(stdin, "%s %d", p.name, &p.age);
//	printf("%s %d\n", p.name, p.age);
//
//	return 0;
//}

//#include<stdio.h>
//
//int main()
//{
//	char ch[10] = { 0 };
//	//打开文件
//	FILE* pf = fopen("test.txt", "r");
//	if (pf == NULL)
//	{
//		perror("fopen");
//		return 1;
//	}
//	//操作文件
//	char ret = 0;
//	fseek(pf, 2, SEEK_SET);
//	ret = fgetc(pf);
//	printf("%c\n", ret);
//	printf("%d\n", ftell(pf));
//
//	rewind(pf);
//	fseek(pf, 2, SEEK_CUR);
//	ret = fgetc(pf);
//	printf("%c\n", ret);
//	printf("%d\n", ftell(pf));
//
//	//关闭文件
//	fclose(pf);
//	pf = NULL;
//	return 0;
//}

//宏--交换一个整数二进制位的奇偶位
//左旋？
#define RETURN 
